多目标模板匹配
一. 模板匹配
模板匹配是数字图像处理的重要组成部分之一。把不同传感器或同一传感器在不同时间、不同成像条件下对同一景物获取的两幅或多幅图像在空间上对准,或根据已知模式到另一幅图中寻找相应模式的处理方法就叫做模板匹配。
简单而言,模板就是一幅已知的小图像。模板匹配就是在一幅大图像中搜寻目标,已知该图中有要找的目标,且该目标同模板有相同的尺寸、方向和图像,通过一定的算法可以在图中找到目标,确定其坐标位置。
二. 单目标模板匹配
这里的模板匹配的方法其实并不复杂,利用目标的边缘信息用于搜索目标图像的模板所在位置。先上模板图像,利用一定的方法提取模板图像的边缘,提取边缘中做了一定的优化,如最大值抑制,双滞滤波器等等,使得边缘信息足够精确,提取出的边缘图像与模板图像放一起好对比。这里请忽略边缘图像中的蓝色十字架,和边缘图像的大小,这里是经过处理的,方便定位以及金字塔图像的处理。
这里贴张目标图像,就是需要匹配的图像,先从简单到复杂讲解,对单目标匹配完才能进行多目标匹配嘛,如下图所示为目标图像,由于太大了,缩放下,模板图像其实是从红色框框里抠出来的。
这里需要提取目标图像的梯度图,先分别提取水平和垂直的梯度图像,在计算出梯度的模的图像:
好了,目标图像的梯度信息有了,模板图像的边缘信息也有了,这时候可以进行简单的单目标模板匹配了。这里利用如下公式进行模板匹配:
也就是在目标梯度图像中逐像素进行搜索,利用NCC匹配度进行判断,大于一定的匹配度,我们就认为这个就是模板图像,找到最大的匹配度,单目标匹配就完成了。哈哈,是不是很简单。接下来说说多目标模板匹配吧。
三. 多目标模板匹配
有了之前的基础,这里要说说多目标模板匹配,目标图像中很有可能出现需要匹配的目标处于旋转一定角度的,就是说,目标与模板的摆放角度并不相同,如下图所示:
这里红色的框为模板图像,白色的框框就是其他目标图像,看出角度相差蛮大的吧。怎么解决呢?
这里很容易就联想到,可以将模板图像的边缘图像旋转1°就生成一个模板图像,再在图中进行寻找,确实是这么做的,但是呢,有一个问题,直接这样计算,计算复杂度相当高,对于一张大图,耗时可是相当可怕的。
图像金字塔刚好可以解决这个问题,我们可以利用图像金字塔的由粗糙到精细以达到加速的作用,利用模板图像进行下采样,然后提取边缘后进行旋转,进行金字塔的最底层的图像粗匹配。
读者这时候一定会觉得,我的天哪,怎么误匹配这么多,其实这是因为缩小后图像的噪声导致匹配的目标多了,别担心这是正常现象,可是有没有发现,这里虽然很多,但相比于原来的逐点匹配,到下一层匹配的区域就缩小了很多,时间就提上去了很多,这里贴张下一层金子塔的匹配结果。有没有很兴奋?完全把目标图像中的目标提取出来了。
接下来金字塔的任务就是对目标图像中的目标进行精确提取就可以了,任务基本上完工了,贴张最终效果图吧。